The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.
Data storage and retrieval systems often include two parts. Typically, the two parts are a transactional front-end that processes changes to stored data and an analytical back-end that analyzes the stored data, for example, when a query is executed. FIG. 1 depicts an example computer architecture. Referring to FIG. 1, client computers 100 and 102 are communicatively coupled to online transaction processing (OLTP) server 104 and online analytical processing (OLAP) server 106.
OLTP server 104 may be optimized to handle concurrent changes from multiple client computers 100 and 102. The changes may be implemented based on one or more instructions that may be processed as a single logical operation called a transaction. For example, Structured Query Language (SQL) commands “INSERT”, “UPDATE”, and “DELETE” may each be processed as a single transaction. Data related to a transaction may be persisted when a “commit” operation is performed on the transaction. A transaction that fails to be “committed” (e.g., due to an error) may undergo a “rollback” operation that restores data to a previous version.
OLAP server 106 may be optimized to run complex, long-running queries. To avoid computational costs associated with constantly accessing data from OLTP server 104, OLAP server 106 may periodically replicate data stored by OLTP server 104 and execute a query on the replicated data. For example, whenever OLTP server 104 processes a change to a database table, the entire table may be replicated by OLAP server 106. However, frequently loading entire tables may disturb the execution of any running queries. Alternatively, after loading all data once, OLAP server 106 may retrieve each change to the data as it occurs in OLTP server 104. However, some of the changes may be unnecessary for the execution of any query. As a result, excess data replication may senselessly increase latency and/or the need for larger memory systems. Thus, approaches for efficiently retrieving up-to-date data on an “as-needed” basis are desirable and beneficial.